package com.salon.server.entity;

import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.salon.server.enumration.PaymentMethod;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * 销售记录表
 * </p>
 *
 * @author zooy
 * @since 2025-08-28
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("sale")
public class Sale implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 销售记录ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 产品ID
     */
    private Integer productId;

    /**
     * 产品名称
     */
    private String productName;

    /**
     * 会员ID（可为空，表示非会员购买）
     */
    private Integer memberId;

    /**
     * 会员姓名
     */
    private String memberName;

    /**
     * 销售数量
     */
    private Integer quantity;

    /**
     * 产品单价
     */
    private BigDecimal unitPrice;

    /**
     * 总金额（原价）
     */
    private BigDecimal totalAmount;

    /**
     * 优惠金额
     */
    private BigDecimal discountAmount;

    /**
     * 实付金额
     */
    private BigDecimal finalAmount;

    /**
     * 支付方式
     * 默认使用余额支付
     */
    private String paymentMethod = PaymentMethod.BALANCE.name();

    /**
     * 创建人（销售员）
     */
    private String createdBy;

    /**
     * 销售状态
     */
    private String status;

    /**
     * 备注信息
     */
    private String notes;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createdAt;

    /**
     * 更新时间
     */
    private LocalDateTime updatedAt;


}
